//#include<iostream>
//const int N = 1e6 + 10;
//int e[N], ne[N], pre[N], h, id;
//using namespace std;
//bool s[N];
//int main()
//{
//	e[1] = 1;
//	pre[1] = h;
//	ne[h] = 1;
//	int n; cin >> n;
//	for (int i = 2; i <= n; i++)
//	{
//		int k,p; cin >> k >> p;
//		id++;
//		if (p == 0)
//		{
//			e[i] = i;
//			pre[i] = pre[id];
//			ne[i] = id;
//			ne[pre[id]] = i;
//			pre[id] = i;
//		}
//		else if (p == 1)
//		{
//			e[i] = i;
//			pre[i] = id;
//			ne[i] = ne[id];
//			pre[ne[id]] = i;
//			ne[id] = i;
//		}
//	}
//	int m, x; cin >> m;
//	while (m--)
//	{
//		cin >> x;
//		if (s[x] == true) continue;
//		ne[pre[x]] = ne[x];
//		pre[ne[x]] = pre[x];
//		s[x] = true;
//	}
//	for (int i = ne[h]; i != 0; i = ne[i])
//	{
//		cout << i << ' ';
//	}
//	cout << endl;
//	return 0;
//}
//#include<iostream>
//const int N = 1e6 + 10;
//int ne[N], pre[N],n,k,h,p;
//using namespace std;
//bool s[N];
//int main()
//{
//	cin >> n;
//	ne[h] = 1;
//	pre[1] = h;
//	for (int i = 2; i <= n; i++)
//	{
//		cin >> k >> p;
//		if (p == 0)
//		{
//			pre[i] = pre[k];
//			ne[i] = k;
//			ne[pre[k]] = i;
//			pre[k] = i;
//		}
//		else if (p == 1)
//		{
//			pre[i] = k;
//			ne[i] = ne[k];
//			pre[ne[k]] = i;
//			ne[k] = i;
//		}
//	}
//		int m,x; cin >> m;
//		while (m--)
//		{
//			cin >> x;
//			if (s[x] == true) continue;
//			ne[pre[x]] = ne[x];
//			pre[ne[x]] = pre[x];
//			s[x] = true;
//		}
//		for (int i = ne[h]; i != 0; i = ne[i])
//		{
//			cout << i << ' ';
//		}
//		cout << endl;
//	
//	return 0;
//}